/**
 * 给定一个排列，求满足条件的数对的数量：
 * 1. i < j
 * 2. Ai > Aj
 * 3. gcd(Ai, Aj) = 1
 * 即互质的逆序对的数量
 * 
 * 首先按照数组的顺序记录i的倍数Bei[i]
 * 即Bei[i][j]是i的第j个倍数，按照原数组顺序
 * 
 * 对每个Bei[i]求出逆序对的数量，记作Ansi
 * 再对每个Ans[i]，令其所有非本身的因子为j，则将Ans[i] -= Ans[j]
 * 这是为了不重复计算
 * 最后Ans[1]是答案
 */
#include <bits/stdc++.h>
using namespace std;

#include <bits/extc++.h>
using namespace __gnu_pbds;

struct FenwickTree{ // 树状数组

using value_type = int;
using vec_type = vector<value_type>;

int n;
vec_type c;

FenwickTree() = default;

static int lowbit(int x){return x & -x;}

void init(int nn){this->c.assign((this->n=nn) + 1, 0);}

void modify(int pos, value_type delta){
    for(int i=pos;i<=this->n;i+=lowbit(i)) this->c[i] += delta;
}

value_type query(int pos)const{
    value_type ans = 0;
    for(int i=pos;i;i-=lowbit(i)) ans += this->c[i];
    return ans;
}

value_type query(int s, int e)const{return this->query(e) - this->query(s - 1);}

}Bt;


using llt = long long;
using vi = vector<int>;

int N;
vector<llt> A;

vector<vector<int>> Bei;

llt proc(const vi & vec){
    llt ans = 0;
    for(auto i : vec){
        ans += Bt.query(i + 1, N);
        Bt.modify(i, 1);
    }
    for(auto i : vec){
        Bt.modify(i, -1);
    }    
    return ans;
}


llt proc(){
    Bei.assign(N + 1, {});
    for(int i=1;i<=N;++i){
        auto ai = A[i];
        for(int j=1;j*j<=ai;++j){
            if(0 == ai % j) {
                Bei[j].emplace_back(ai);
                if(j * j != ai) Bei[ai / j].emplace_back(ai);
            }
        }
    }
    Bt.init(N);
    vector<llt> ans(N + 1, 0);
    for(int i=1;i<=N;++i){
        ans[i] = proc(Bei[i]);
    }
    for(int i=N;i>=1;--i){
        cout << i << ", " << ans[i];
        for(int j=i+i;j<=N;j+=i){
            ans[i] -= ans[j];
        }
        cout << ", " << ans[i] << endl;
    }
    return ans[1];
}

void work(){
    cin >> N;
    A.assign(N + 1, {});
    for(int i=1;i<=N;++i) cin >> A[i];
    cout << proc() << "\n";
    return;
}

int main(){
#ifndef ONLINE_JUDGE
    freopen("z.txt", "r", stdin);
#endif
    ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    int nofkase = 1;
    // cin >> nofkase;
    while(nofkase--) work();
    return 0;
}